<?php
/**
 * Определения текущего языка по указанию в урле /en/example.com
 *
 * @author nrnwest@gmail.com
 *
 */
class Arm_Translate_Method_Url
{

    /**
     * Язык по умолчанию в системе
     * @var string
     */
    protected $_langDefault;


    /**
     *
     */
    public function __construct($langDefault)
    {
        $this->_langDefault = $langDefault;
    }

    /**
     * возвращает текущий язык.
     * 
     * @return string
     */
    public function getLang()
    {
        $request  = Zend_Controller_Front::getInstance()->getRequest();
        if($request === null) {
            $request = new Zend_Controller_Request_Http();
            Zend_Controller_Front::getInstance()->setRequest($request);
        }

        $url      = $request->getRequestUri();
        $urlArray = explode('/', ltrim($url, '\\/'));
        preg_match('~^[a-z]{2}$~i', $urlArray[0], $result);
        if($result === array()) {
            // вернем дефолтовый
            return  $this->_langDefault;
        }
        // установить базовый урл. если найденный язык не соотвествует языку по умолчанию.
        $lang = trim(strtolower($result[0]));
        if($lang !== $this->_langDefault) {
            Zend_Controller_Front::getInstance()->setBaseUrl('/' . $result[0] . '/');
        } else {
            // язык в урле соотвествует языку по умолчанию бросаем исключение
            throw new Arm_Translate_Exception('Not sure the URL is not allowed to specify the default language in url');
        }
        // установить урл запроса
        unset($urlArray[0]);
        
        Zend_Controller_Front::getInstance()->getRequest()->setRequestUri( '/' . implode('/', $urlArray));
        return $lang;
    }

}
